# @Timer:2022/3/25
# @作者:meng
# @文件名:文件处理.py
'''文件操作步骤'''
#1、打开文件   2、操作文件：读写   3、关闭文件

#打开文件
# f = open(file,mode='r',encoding='')

'''
mode有几种:r、w、a、r+、w+、a+、b
r:以只读方式打开文件，并将文件指针指向文件头，若文件不存在则报错
w:以只写模式打开文件，并将文件指针指向文件头，如果文件存在，则清空文件再写入，若文件不存在，则创建文件并写入
a:以追加写入模式打开文件，并将文件指针指向文件尾部，若文件存在，则在尾部追加，若文件不存在，则创建文件并写入
r+:在可读基础上增加可写权限,从文件指针位置替换原来内容
w+:在可写基础上增加可读权限
a+:在可写基础上增加可读权限
b:以二进制方式读写文件，需要与其他组合使用，如:ab、wb....
'''

'''
read():一次读取文件所有内容，返回一个str
read(size)：每次最多读取制定长度的内容，在python2中是读取的字节数，python3中是字符数
readlines():一次读取文件所有内容，返回一个list
readline()：每次只读取一行内容
'''
# 1、打开文件
# f = open('./testdir/hello.py','r',encoding='utf-8')
# 2、读取文件内容
# print(f.read())
# 3、关闭文件
# f.close()

# 查看read()返回类型,str
# f = open('./testdir/hello.py','r',encoding='utf-8')
# print(type(f.read()))
# f.close()

# 查看readlines()返回类型,list
# f = open('./testdir/hello.py','r',encoding='utf-8')
# print(type(f.readlines()))
# f.close()

# 查看read(size),list
# f = open('./testdir/hello.py','r',encoding='utf-8')
# print(f.read(3))
# f.close()

#readline()方法使用
# f = open('./testdir/hello.py','r',encoding='utf-8')
# print(f.readline())
# f.close()


# 在读操作时，首次读，文件指针指向文件头部，第二次读，文件指针会指向首次读取结束的位置
# f = open('./testdir/hello.py','r',encoding='utf-8')
# print(f.read(1))
# print(f.read(1))
# f.close()

#seek()：重置文件指针位置
# f = open('./testdir/hello.py','r',encoding='utf-8')
# print(f.read(1))
# f.seek(5) # ()内为0，即从文件头部开始，其它，则定位到制定位置，类似列表、字符串的索引
# print(f.read(1))
# f.close()

'''
通过with操作，可以不用close操作
'''
# with  open('./testdir/hello.py','r',encoding='utf-8') as f:
#     print(f.readline())

'''
写操作
'''
# with  open('./testdir/hello.py','a',encoding='utf-8') as f:
#     print(f.write("\nprint('apple')"))
#     print(f.write('\nprint("apple")'))

#r+  替换方式
# with  open('./testdir/hello.py','r+',encoding='utf-8') as f:
#     f.seek(3)
#     print(f.write("print('apple')"))

#w+  清空内容
with  open('./testdir/hello.py','w+',encoding='utf-8') as f:
    print(f.write("print('apple')"))


